#include <stdio.h>
#include <stdlib.h>                         //链表中结点的结构
typedef struct link
{
    int elem;
    struct link* next;
}Link;
Link* initLink()
{
    int i;                                  //创建头指针
    Link* p = NULL;                         //创建头结点
    Link* temp = (Link*)malloc(sizeof(Link));
    temp->elem = 0;
    temp->next = NULL;                      //头指针指向头结点
    p = temp;                               //每创建一个结点，都令其直接前驱结点的指针指向它
    for (i = 1;i < 5;i++)
    {
        Link* a = (Link*)malloc(sizeof(Link));
        a->elem = i;
        a->next = NULL;                     //每次 temp 指向的结点就是 a 的直接前驱结点
        temp->next = a;                     //temp指向下一个结点，为下一次添加结点做准备
        temp = temp->next;
    }
    return p;
}
void display(Link* p)
{
    Link* temp = p;                         //temp指针用来遍历链表
    while(temp) 
    {
        Link* f = temp;                     //准备释放链表中的结点
        printf("%d" , temp->elem);
        temp = temp->next;
        free(f);
    }
    printf("\n");
}
int main()
{
    Link* p = NULL;
    printf ("初始化链表为：、n");
    p = initLink();                            //输出链表中的数据
    display(p);
    return 0;
}
